// 有 n 个气球，编号为0 到 n - 1，每个气球上都标有一个数字，这些数字存在数组 nums 中。

// 现在要求你戳破所有的气球。戳破第 i 个气球，你可以获得 nums[i - 1] * nums[i] * nums[i + 1] 枚硬币。 这里的 i - 1 和 i + 1 代表和 i 相邻的两个气球的序号。如果 i - 1或 i + 1 超出了数组的边界，那么就当它是一个数字为 1 的气球。

// 求所能获得硬币的最大数量。

// 来源：力扣（LeetCode）
// 链接：https://leetcode-cn.com/problems/burst-balloons
// 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
#include<bits/stdc++.h>
using namespace std;
// 暴力
// 27/70超时

class Solution {
public:
    int maxCoins(vector<int>& nums) {
        nums.insert(nums.begin(),1);
        nums.insert(nums.end(),1);
        return roll(nums,0,nums.size()-1);
    }
    int roll(vector<int> nums,int l,int r){
        int imax=0;
        for(int i=l+1;i<r;i++){
            imax=max(imax,roll(nums,l,i)+nums[i]*nums[l]*nums[r]+roll(nums,i,r));
        }
        return imax;
    }

};